package com.myblog.redis;

import com.myblog.model.Visitor;
import com.myblog.utils.DataMap;

import java.util.concurrent.TimeUnit;

public interface RedisService {
    /**
     * 判断redis中查找的访客信息是否为空，并将信息封装为visitor对象返回
     * @param visitorNum
     * @param pageName
     * @return
     */
    Visitor visitorMsgIfExist(Object visitorNum, String pageName);

    /**
     * 更新访客量
     * @param visitor
     * @param totalVisitor
     */
    void updateVisitorNum(Visitor visitor,Visitor totalVisitor);

    /**
     * 获得对应key值下的属性field的值
     * @param key key值
     * @param field 要获得值的属性
     * @return 如果存在则返回值，否则返回null
     */
    Object getHash(String key, Object field);

    /**
     * 获取用户数量信息，如果redis中不存在，则从数据库中获取
     * @param allUser
     * @return
     */
    Integer numOfAllUserIfExist(Object allUser);

    /**
     * 获取文章数量信息，如果redis中不存在，则从数据库中获取
     * @param articleNum
     * @return
     */
    Integer numOfAllArticleIfExist(Object articleNum);

    /**
     * 获取文章总点赞数，如果redis中不存在，则从数据库中读取
     * @param articleLikeNum
     * @return
     */
    Integer numOfAllArticleLikeIfExist(Object articleLikeNum);

    /**
     * 获取文章单个点赞数，如果redis中不存在，则从数据库中读取
     * @param articleLikeNum
     * @return
     */
    Integer numOfArticleLikeByIdIfExist(Object articleLikeNum,long articleId);

    //仪表盘更新所有文章数量
    void updateNumOfAllArticleNum(Integer numOfTheArticle);

    //仪表盘更新所有用户数量
    void updateNumOfAllUserNum(Integer numOfTheUser);

    /**
     * 更新redis中单个文章的点赞量
     * @param i
     */
    void updateThumbsUpOnRedis(int i);

    /**
     * 获取用户未读信息
     * @param userPhone
     * @return
     */
    DataMap getUserNews(String userPhone);

    /**
     * 删除指定key
     */
    public void deleteHahKey(String key);

    /**
     * 设置存活时间
     */
    public void expire(String key, long time, TimeUnit timeUnit);
}

